// #ifndef VUE3
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
			// #endif

			// #ifdef VUE3
			import {
				createStore
			} from 'vuex'
			const store = createStore({
				// #endif
				state: {
					userInfo:{},
					token:'',
					hasLogin: false,
					isUniverifyLogin: false,
					loginProvider: "",
					openid: null,
					testvuex: false,
					colorIndex: 0,
					colorList: ['#FF0000', '#00FF00', '#0000FF'],
					noMatchLeftWindow: true,
					active: 'componentPage',
					leftWinActive: '/pages/component/view/view',
					activeOpen: '',
					menu: [],
					univerifyErrorMsg: ''
				},
				mutations: {
					login(state, provider) {
						state.hasLogin = true;
						state.loginProvider = provider;
					},
					logout(state) {
						state.hasLogin = false
						state.openid = null
					},
					setOpenid(state, openid) {
						state.openid = openid
					},
					setTestTrue(state) {
						state.testvuex = true
					},
					setTestFalse(state) {
						state.testvuex = false
					},
					setColorIndex(state, index) {
						state.colorIndex = index
					},
					setMatchLeftWindow(state, matchLeftWindow) {
						state.noMatchLeftWindow = !matchLeftWindow
					},
					setActive(state, tabPage) {
						state.active = tabPage
					},
					setLeftWinActive(state, leftWinActive) {
						state.leftWinActive = leftWinActive
					},
					setActiveOpen(state, activeOpen) {
						state.activeOpen = activeOpen
					},
					setMenu(state, menu) {
						state.menu = menu
					},
					setUniverifyLogin(state, payload) {
						typeof payload !== 'boolean' ? payload = !!payload : '';
						state.isUniverifyLogin = payload;
					},
					setUniverifyErrorMsg(state, payload = '') {
						state.univerifyErrorMsg = payload
					}
				},
				getters: {
					currentColor(state) {
						return state.colorList[state.colorIndex]
					}
				},
				actions: {
					// lazy loading openid
					getUserOpenId: async function({
						commit,
						state
					}) {
						return await new Promise((resolve, reject) => {
							if (state.openid) {
								resolve(state.openid)
							} else {
								uni.login({
									success: (data) => {
										commit('login')
										setTimeout(function() { //模拟异步请求服务器获取 openid
											const openid = '123456789'
											console.log(
												'uni.request mock openid[' +
												openid + ']');
											commit('setOpenid', openid)
											resolve(openid)
										}, 1000)
									},
									fail: (err) => {
										console.log('uni.login 接口调用失败，将无法正常使用开放接口等服务',
											err)
										reject(err)
									}
								})
							}
						})
					},
					getPhoneNumber: function({
						commit
					}, univerifyInfo) {
						return new Promise((resolve, reject) => {
							uni.request({
								url: 'https://97fca9f2-41f6-449f-a35e-3f135d4c3875.bspapp.com/http/univerify-login',
								method: 'POST',
								data: univerifyInfo,
								success: (res) => {
									const data = res.data
									if (data.success) {
										resolve(data.phoneNumber)
									} else {
										reject(res)
									}

								},
								fail: (err) => {
									reject(res)
								}
							})
						})
					}
				}
			})

			export default store